/** ***********************************************************************************
* @file         bt_app.h
* @brief        蓝牙操作部分
* @details      
* @author       
* @date         2021/3
* @copyright    北京高知科技有限公司    
* @version      V1.0
* @attention    无
**************************************************************************************/

#ifndef _bluetooth_app_H_
#define _bluetooth_app_H_

#include "gaoz_api.h"
#include "n808_app.h"

#define  BT_ACK_QUEUE_MAX_NUM			( 10 )
#define DEBUG_BT       1


#define BT_RECV_DATA_LEN  ( 200 )
#define BT_NAMEMAXLEN	50		//bt_name
#define BT_PUBKEYMAXLEN	300		//RSA_PubicKey
#define BT_RCVMAXLEN	200		//中断接收缓存

typedef struct
{
	uint8_t mac_len;		//长度
	uint8_t mac_buf[6];	//

	uint8_t bluetooth_name[BT_NAMEMAXLEN];
	uint8_t bluetooth_nameLen;

	uint16_t RSA_PubicKeyLen;
	uint8_t RSA_PubicKey[BT_PUBKEYMAXLEN];		//实际272字节

	uint8_t irt_rcv_buf[BT_RCVMAXLEN];	//存储中断来的数据
	uint16_t irt_rcv_idx;						//当前下标
	uint16_t irt_rcv_idx_old;						//当前下标
	uint8_t irt_rcv_sta;

	uint8_t irt_deal_buf[BT_RCVMAXLEN];
	uint16_t irt_deal_Len;	//说明，代表要处理的数据长度，处理完必须清0。只有0时才能再次赋值

}bluetooth_recv_t;


/** ****************************************************************************
* @remarks       void bt_ctl_create_task( unsigned portBASE_TYPE uxPriority )
* @brief         数据处理任务
* @param[in]     uxPriority 优先级
* @param[out]    无
* @return        无
* @attention     在系统启动后进行创建
*******************************************************************************/
extern void bluetooth_ctl_create_task( unsigned portBASE_TYPE uxPriority );
/** ****************************************************************************
* @remarks        void bt_recv_state_cb( void * pv)
* @brief         底层状态回调函数
* @param[in]     * pv 参数输入
* @param[out]    无
* @return        无
* @attention     
*******************************************************************************/
extern void bluetooth_recv_state_cb(uint8_t state);
/** ****************************************************************************
* @remarks       uint8_t_t bt_ctlock_res_queue_put( national_net_res_msg_t *res_msg )
* @brief         发送数据
* @param[in]     *res_msg 发送的数据地址
* @param[out]    无
* @return        1 发送数据成功 ，0 发送数据失败
* @attention     无
*******************************************************************************/
extern uint8_t bluetooth_ctlock_res_queue_put( national808_ctrllock_msg_t *res_msg );
/** ****************************************************************************
* @remarks      void send_rsa_error(uint8_t errCode)
* @brief        反馈错误码
* @param[in]     
* @param[out]    
* @return        
* @attention    
*******************************************************************************/
extern void send_rsa_error(uint8_t errCode);
/** ****************************************************************************
* @remarks       uint8_t bt_getname(void)
* @brief        蓝牙名称
* @param[in]     
* @param[out]    
* @return        
* @attention     
*******************************************************************************/
extern uint8_t *bluetooth_getname(void);
/** ****************************************************************************
* @remarks       uint8_t bt_getrsa(void)
* @brief        蓝牙rsa
* @param[in]     
* @param[out]    
* @return        
* @attention     
*******************************************************************************/
extern uint8_t *bluetooth_getrsa(void);
/** ****************************************************************************
* @remarks       uint8_t bt_setrsa(uint8_t * pDa, uint16_t len)
* @brief         设置蓝牙RSA秘钥。
* @param[in]     
* @param[out]    
* @return        0成功，1失败
* @attention     
*******************************************************************************/
extern uint8_t bluetooth_setrsa(uint8_t * pDa, uint16_t len);
/** ****************************************************************************
* @remarks       uint8_t bt_setname(uint8_t * pDa, uint16_t len)
* @brief         设置蓝牙名称
* @param[in]     
* @param[out]    
* @return        0成功，1失败, 2其他错误
* @attention     
*******************************************************************************/
extern uint8_t bluetooth_setname(uint8_t * pDa, uint8_t len);

#endif



























